'use strict';

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
	// The entry file. All your app roots fromn here.
	entry: [
		path.join(__dirname, 'app/index.js')
	],
	// Where you want the output to go
	output: {
		path: path.join(__dirname, '/dist/'),
		filename: '[name].min.js',
		publicPath: './'
	},
	plugins: [
		// webpack gives your modules and chunks ids to identify them. Webpack can vary the
		// distribution of the ids to get the smallest id length for often used ids with
		// this plugin
		new webpack.optimize.OccurenceOrderPlugin(),

		// handles creating an index.html file and injecting assets. necessary because assets
		// change name because the hash part changes. We want hash name changes to bust cache
		// on client browsers.
		new HtmlWebpackPlugin({
			template: './index.tpl.html',
			inject: 'body',
			filename: './index.html'
		}),
		// handles uglifying js
		new webpack.optimize.UglifyJsPlugin({
			compressor: {
				warnings: false,
				screw_ie8: true
			}
		}),
		// plugin for passing in data to the js, like what NODE_ENV we are in.
		new webpack.DefinePlugin({
			'process.env.NODE_ENV': JSON.stringify('production')
		})
	],

	module: {
		loaders: [
			{
				test: /\.js$/,
				exclude: /node_modules/,
				loader: "babel-loader",
				query:
				{
					presets:['react','es2015']
				}
			},
			{
				test: /\.json?$/,
				loader: 'json'
			},
			{
				test: /\.css$/,
				loader: "style!css"
			},
			{
				test: /\.less/,
				loader: 'style-loader!css-loader!less-loader'
			}
		]
	},
	postcss: [
		require('autoprefixer')
	]
};
